home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Hardware / Mac OS USB DDK / Mac OS USB DDK 1.4.1 / Examples / USBSampleStorageDriver / UnitTableDriver / USB_ClassDriverAccess.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-25  |  1.7 KB  |  57 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        USB_ClassDriverAccess.h
  3.  
  4.     Contains:    Prototypes and definition for accessing the USB class driver
  5.  
  6.     Version:    1.0
  7.  
  8.     Copyright:    © 1999-2000 by Apple Computer, Inc., all rights reserved.
  9.  
  10.  
  11. */
  12.  
  13. #pragma once
  14.  
  15. #include "StorageClassPublicAPI.h"
  16.  
  17. enum
  18. {
  19.     kInternalPBBufferSize = 256
  20. };
  21.  
  22. // The Parameter block used by all the internal requests
  23. typedef struct IntDriveRequestPB
  24. {
  25.     StorageExecuteCommandPB            executePB;
  26.     volatile OSStatus                status;
  27.     UInt8                            currentExecutionState;
  28.     UInt8                            autoStatus[2];
  29.     Boolean                            autoStatusIsValid;
  30.     UInt8                            buffer[kInternalPBBufferSize];
  31.     UInt32                            userData;
  32.     void                             *completionProc;
  33.     void                             *userCompletionProc;
  34.     Ptr                                userBuffer;
  35.     Boolean                            isWriteRequest;
  36.     volatile Boolean                inUse;
  37. } IntDriveRequestPB, *IntDriveRequestPBPtr;
  38.  
  39. typedef CALLBACK_API_C( void , InternalCompletionProcPtr )( IntDriveRequestPBPtr requestPB );
  40.  
  41. extern Boolean                 IsClassDispatchTableValid( void );
  42. extern void                 SetClassDispatchTable( StorageClassDispatchTablePtr newValue );
  43. extern OSStatus             InitializeClassAccess( void );
  44. extern OSStatus             TerminateClassAccess( void );
  45. extern OSStatus             SendClassStatusCall( UInt32 selectorCode, void *dataBuffer );
  46. extern OSStatus             SendClassControlCall( UInt32 selectorCode, void *dataBuffer );
  47.  
  48. extern IntDriveRequestPBPtr    GetDriveInternalPB( void );
  49. extern void                 FreeInternalPB( IntDriveRequestPBPtr intDrivePB );
  50. extern Boolean                 IsCommandPending( void );
  51. extern OSStatus             SendDeviceRequest( StorageExecuteCommandPB     *commandPB );
  52. extern void                 DeviceRequestCompletion( void *thePB );
  53. extern OSStatus                AbortPendingCommand( void );
  54.  
  55. extern IntDriveRequestPBPtr    GetManualEjectPB( void );
  56. extern void FreeManualEjectPB( IntDriveRequestPBPtr intDrivePB );
  57.